package internal

import (
	"encoding/json"
	"fmt"
	"reflect"
	"GoServer/msg"
	"GoServer/msgbackend"
	"GoServer/user"
	"github.com/name5566/leaf/gate"
	_"github.com/name5566/leaf/log"
)

func handleMsg(m interface{}, h interface{}) {
	skeleton.RegisterChanRPC(reflect.TypeOf(m), h)
}

func init() {
	// 向当前模块（login 模块）注册 Test 消息的消息处理函数 handleTest
	handleMsg(&msg.UserLogin{}, handleTest)
}

// 消息处理
func handleTest(args []interface{}) {
	// 收到的 Test 消息
	m := args[0].(*msg.UserLogin)
	// 消息的发送者
	a := args[1].(gate.Agent)
	// a.Close()
	// var message string
	fmt.Println("连接进来l")
	anget :=  user.Md5V()
	authres, output := user.AdminQueryInit(m.Loginname, m.Authkey, anget)
	mapMsg := make(map[string]interface{})
	islogin := true
	if authres && output != "" {
		mapMsg["MsgType"] = 200
		mapMsg["MsgData"] = "鉴权成功"
	} else {
		islogin = false
		mapMsg["MsgType"] = 401
		mapMsg["MsgData"] = "鉴权失败"
	}
		jsonBytes, _ := json.Marshal(&mapMsg)
		ret, _ := user.UserDaoGetUserInfoWithAuth(m.Loginname, m.Authkey, a, anget)
		user.UserInfoCacheAdd(ret)
		// //获取用户缓存信息
		res := user.UserInfoCacheGet(anget)
		// logger, _ := log.New("error", "", l.LstdFlags)
		// defer logger.Close()
		// log.Debug("login handler loginName : %v Authkey: %v message %v",m.Loginname,m.Authkey,message)
		// log.Debug("getoutput %v", output)
		resposeUser := res.Angets
		outputauth := string(jsonBytes)
		if islogin == true {
		fmt.Println(output)
		msgbackend.Setloginchannel(output)
		}
		fmt.Println(&msg.Respose{Result: outputauth})
		resposeUser.WriteMsg(&msg.Respose{
			Result: outputauth,
		})



	// 1 查询数据库--判断用户是不是合法
	// 2 如果数据库返回查询正确--保存到缓存或者内存
	// 输出收到的消息的内容
	//log.Debug("Test login %v", m.LoginName)
	// 给发送者回应一个 Test 消息
	// a.WriteMsg(&msg.Respose{
	// 	Result: message,
	// })
}
